<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    // Promise的链式操作
    // 1. then() 方法的返回值是一个新的Promise实例(同种类型的数据)


    // debugger;
    // 执行异步操作 => 根据异步操作的结果改变状态
    var p = new Promise(function (resolve, reject) { // 形参
        setTimeout(function () {
            // debugger;
            resolve(1);
            // reject(1);
        }, 2000)
    });
    console.log("p 34:", p); // {<pending>:undefined}

    /*

     // p.then(function (arg) { // 形参
     //     // debugger;
     //     console.log("fulfilled", arg);
     // }).catch(function (arg) {// 形参
     //     // debugger;
     //     console.log("rejected", arg);
     // }) */


    //  代码执行流程
    //  延迟两秒 => p <fulfilled:1> =>  then()回调函数(返回值) 正常执行 => p1  <fulfilled:返回值>
    //                                 then()回调函数(返回值) 出现错误 => p1  <rejected:错误的原因>
    //
    //  延迟两秒 => p <rejected:1> =>  p1  <rejected:1> 

    var p1 = p.then(function (arg) { // 形参
        // debugger;
        // aaa;
        console.log("fulfilled p1", arg);
        return 2;
    })
    console.log("p1 49", p1);  // {<pending>:undefined}  新的Promise实例

    // p1.then()
    // p1.catch()

    p1.then(function (arg) {
        // debugger;
        console.log("fulfilled p2", arg);
    })

    p1.catch(function (arg) {
        // debugger;
        console.log("rejected", arg);
    })




</script>

</html>